package com.tbit.uqbike.client.service;

import com.tbit.uqbike.client.pojo.Geo;
import com.tbit.uqbike.client.pojo.Point;
import com.tbit.uqbike.client.pojo.User;

import java.util.List;

/**
 * 电子围栏
 *
 * @author Leon
 * 2019年10月16日 下午8:08:17
 */
public interface GeoService {

    /**
     * 获取用户附近的电子围栏
     *
     * @param user
     * @param point
     * @return
     */
    List<Geo> findNearGeo(User user, Point point, Integer getMapType, Integer radius,
                          Integer accountId);

    /**
     * 根据代理商查询电子围栏
     *
     * @param accountId
     * @return
     */
    List<Geo> getByAccountId(Integer accountId);

    /**
     * 检查是否在电子围栏内
     *
     * @param accountId
     * @param point
     * @return
     */
    Boolean checkInGeo(Integer accountId, Point point);

    /**
     * 根据品牌id获取所有
     *
     * @param accountId
     * @return
     */
    List<Geo> getByBrandId(Integer accountId);

    /**
     * 查询是在电子围栏
     *
     * @param accountId
     * @param point
     * @return
     */
    Geo getByBrandId(Integer accountId, Point point);

    /**
     * 获取归属代理商
     *
     * @param accountId
     * @param lo
     * @param la
     * @param mapType
     * @return
     */
    Integer getBelongAccount(Integer accountId, Double lo, Double la, Integer mapType);

    /**
     * 查询是在电子围栏(兼容区域重叠)
     * @param accountId 品牌id
     * @param point 当前定位
     * @param userId 用户id
     * @return
     */
    Geo getByBrandIdAndUserId(Integer accountId, Point point, Integer userId);

    /**
     * 获取归属代理商(兼容区域重叠)
     *
     * @param accountId
     * @param lo
     * @param la
     * @param mapType
     * @return
     */
    Integer getBelongAccountAndUserId(Integer accountId, Double lo, Double la, Integer mapType, Integer userId);
}
